package com.baishancloud.log

import org.apache.flink.api.java.utils.ParameterTool

/**
 *
 * @author ziqiang.wang
 * @date 2022/3/1 16:10
 */
package object douyin {

  /**
   * 写入mallard的数据标识，也是influxdb的表名，对应需求1
   */
  val mallardName1: String = "douyin_tfo"
  /**
   * 写入mallard的数据标识，也是influxdb的表名，对应需求2
   */
  val mallardName2: String = "douyin_cold_ratio"
  /**
   * 聚合窗口时间大小，默认1分钟，单位：分钟
   */
  val windowSize: String = "windowSize"
  /**
   * 状态数据ttl，默认为1小时，单位：小时
   */
  val stateTTL: String = "stateTTL"
  /**
   * 写入mallard阈值，默认为int最大值
   */
  val outThreshold: String = "outThreshold"
  /**
   * 写入mallard时间间隔，默认5秒，单位：秒
   */
  val outInterval: String = "outInterval"
  /**
   * 写入mallard的并行度，默认为1
   */
  val sinkParallel: String = "sinkParallel"
  /**
   * 本地聚合阈值，处理多少条数据之后，输出所有的中间结果，默认值：1000
   */
  val localAggNum: String = "localAggNum"
  /**
   * 表示数据来源于金华地区的 kafka 集群
   */
  val kafkaSourceJh: String = "jh"
  /**
   * 表示数据来源于石家庄地区的 kafka 集群
   */
  val kafkaSourceSjz: String = "sjz"
  /**
   * 说明：由于头条日志的域名切量，所以要在金华地区起一个任务，然后在石家庄地区起一个任务。<br>
   * 金华地区消费所有数据，但是要指定被切换的域名的消费最大时间，以保证消费数据的准确性。<br>
   * 石家庄地区消费指定域名数据，但是要指定被切换域名的消费最小时间，以保证消费数据的准确性。<br>
   * 需要根据消费终止或开始时间进行过滤的域名列表，中间使用英文逗号隔开。
   */
  val filterDomains: String = "filterDomains"
  /**
   * 过滤的终止或开始时间，如果是金华任务，则为终止时间，如果为石家庄任务，则为开始时间。
   */
  val filterSecond: String = "filterSecond"


  /**
   * 检查是否缺少必要参数。
   */
  def paramCheck(parameterTool: ParameterTool): Boolean = {
    if (parameterTool.has(filterDomains) && parameterTool.has(filterSecond)) {
      true
    } else {
      println(s"缺少必要参数：${filterDomains} 或 ${filterSecond}")
      false
    }
  }

}
